
/****
 * 获取各个时间的起止日期  本周 本月 上个月 本季 本年 上一年
 */

function getCurrentDate() {
    return new Date();
}
/*** 
* 获得本周起止时间 
*/
function getCurrentWeek() {
    //起止日期数组  
    var startStop = new Array();
    //获取当前时间  
    var currentDate = getCurrentDate();
    //返回date是一周中的某一天  
    var week = currentDate.getDay();
    //返回date是一个月中的某一天  
    var month = currentDate.getDate();

    //一天的毫秒数  
    var millisecond = 1000 * 60 * 60 * 24;
    //减去的天数  
    var minusDay = week != 0 ? week - 1 : 6;
    //alert(minusDay);  
    //本周 周一  
    var monday = new Date(currentDate.getTime() - (minusDay * millisecond));
    //本周 周日  
    var sunday = new Date(monday.getTime() + (6 * millisecond));
    //添加本周时间  
    var datetime = monday.getFullYear() + '-' + (monday.getMonth() + 1) + '-' + monday.getDate()
    startStop.push(datetime);//本周起始时间  
    var datetime = sunday.getFullYear() + '-' + (sunday.getMonth() + 1) + '-' + sunday.getDate()
    //添加本周最后一天时间  
    startStop.push(datetime);//本周终止时间  
    //返回  
    return startStop;
};
/*** 
 * 获得本月的起止时间 
 */
function getCurrentMonth() {
    //起止日期数组  
    var startStop = new Array();
    //获取当前时间  
    var currentDate = getCurrentDate();
    //获得当前月份0-11  
    var currentMonth = currentDate.getMonth();
    //获得当前年份4位年  
    var currentYear = currentDate.getFullYear();
    //求出本月第一天  
    var firstDay = new Date(currentYear, currentMonth, 1);


    //当为12月的时候年份需要加1  
    //月份需要更新为0 也就是下一年的第一个月  
    if (currentMonth == 11) {
        currentYear++;
        currentMonth = 0;//就为  
    } else {
        //否则只是月份增加,以便求的下一月的第一天  
        currentMonth++;
    }


    //一天的毫秒数  
    var millisecond = 1000 * 60 * 60 * 24;
    //下月的第一天  
    var nextMonthDayOne = new Date(currentYear, currentMonth, 1);
    //求出上月的最后一天  
    var lastDay = new Date(nextMonthDayOne.getTime() - millisecond);

    //添加至数组中返回  
    var datetime = firstDay.getFullYear() + '-' + (firstDay.getMonth() + 1) + '-' + firstDay.getDate() ;
    startStop.push(datetime);
    var datetime = lastDay.getFullYear() + '-' + (lastDay.getMonth() + 1) + '-' + lastDay.getDate() ;
    startStop.push(datetime);
    //返回  
    return startStop;
};
/** 
* 获得该月的天数 
* @param year年份 
* @param month月份 
* */
function getMonthDays(year, month) {
    //本月第一天 1-31  
    var relativeDate = new Date(year, month, 1);
    //获得当前月份0-11  
    var relativeMonth = relativeDate.getMonth();
    //获得当前年份4位年  
    var relativeYear = relativeDate.getFullYear();

    //当为12月的时候年份需要加1  
    //月份需要更新为0 也就是下一年的第一个月  
    if (relativeMonth == 11) {
        relativeYear++;
        relativeMonth = 0;
    } else {
        //否则只是月份增加,以便求的下一月的第一天  
        relativeMonth++;
    }
    //一天的毫秒数  
    var millisecond = 1000 * 60 * 60 * 24;
    //下月的第一天  
    var nextMonthDayOne = new Date(relativeYear, relativeMonth, 1);
    //返回得到上月的最后一天,也就是本月总天数  
    return new Date(nextMonthDayOne.getTime() - millisecond).getDate();
};

/** 
 * 返回上一个月的第一天Date类型 
 * @param year 年 
 * @param month 月 
 **/
function getPriorMonthFirstDay(year, month) {
    //年份为0代表,是本年的第一月,所以不能减  
    if (month == 0) {
        month = 11;//月份为上年的最后月份  
        year--;//年份减1  
        return new Date(year, month, 1);
    }
    //否则,只减去月份  
    month--;
    return new Date(year, month, 1);;
};

/** 
 * 获得上一月的起止日期 
 * ***/
function getPreviousMonth() {
    //起止日期数组  
    var startStop = new Array();
    //获取当前时间  
    var currentDate = getCurrentDate();
    //获得当前月份0-11  
    var currentMonth = currentDate.getMonth();
    //获得当前年份4位年  
    var currentYear = currentDate.getFullYear();
    //获得上一个月的第一天  
    var priorMonthFirstDay = getPriorMonthFirstDay(currentYear, currentMonth);
    //获得上一月的最后一天  
    var priorMonthLastDay = new Date(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth(), getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth()));
    //添加至数组  
    var datetime = priorMonthFirstDay.getFullYear() + '-' + (priorMonthFirstDay.getMonth() + 1) + '-' + priorMonthFirstDay.getDate() ;
    startStop.push(datetime);
    var datetime = priorMonthLastDay.getFullYear() + '-' + (priorMonthLastDay.getMonth() + 1) + '-' + priorMonthLastDay.getDate() ;
    startStop.push(datetime);
    //返回  
    return startStop;
};
/** 
 * 得到本季度开始的月份 
 * @param month 需要计算的月份 
 ***/
function getQuarterSeasonStartMonth(month) {
    var quarterMonthStart = 0;
    var spring = 0; //春  
    var summer = 3; //夏  
    var fall = 6;   //秋  
    var winter = 9;//冬  
    //月份从0-11  
    if (month < 3) {
        return spring;
    }

    if (month < 6) {
        return summer;
    }

    if (month < 9) {
        return fall;
    }

    return winter;
};

/** 
* 获得本季度的起止日期 
*/
function getCurrentSeason() {
    //起止日期数组  
    var startStop = new Array();
    //获取当前时间  
    var currentDate = getCurrentDate();
    //获得当前月份0-11  
    var currentMonth = currentDate.getMonth();
    //获得当前年份4位年  
    var currentYear = currentDate.getFullYear();
    //获得本季度开始月份  
    var quarterSeasonStartMonth = getQuarterSeasonStartMonth(currentMonth);
    //获得本季度结束月份  
    var quarterSeasonEndMonth = quarterSeasonStartMonth + 2;

    //获得本季度开始的日期  
    var quarterSeasonStartDate = new Date(currentYear, quarterSeasonStartMonth, 1);
    //获得本季度结束的日期  
    var quarterSeasonEndDate = new Date(currentYear, quarterSeasonEndMonth, getMonthDays(currentYear, quarterSeasonEndMonth));
    //加入数组返回  
    var datetime = quarterSeasonStartDate.getFullYear() + '-' + (quarterSeasonStartDate.getMonth() + 1) + '-' + quarterSeasonStartDate.getDate() ;
    startStop.push(datetime);
    var datetime = quarterSeasonEndDate.getFullYear() + '-' + (quarterSeasonEndDate.getMonth() + 1) + '-' + quarterSeasonEndDate.getDate() ;
    startStop.push(datetime);
    //返回  
    return startStop;
};
/*** 
 * 得到本年的起止日期 
 *  
 */
function getCurrentYear() {
    //起止日期数组  
    var startStop = new Array();
    //获取当前时间  
    var currentDate = getCurrentDate();
    //获得当前年份4位年  
    var currentYear = currentDate.getFullYear();

    //本年第一天  
    var currentYearFirstDate = new Date(currentYear, 0, 1);
    //本年最后一天  
    var currentYearLastDate = new Date(currentYear, 11, 31);
    //添加至数组  
    var datetime = currentYearFirstDate.getFullYear() + '-' + (currentYearFirstDate.getMonth() + 1) + '-' + currentYearFirstDate.getDate() ;
    startStop.push(datetime);
    var datetime = currentYearLastDate.getFullYear() + '-' + (currentYearLastDate.getMonth() + 1) + '-' + currentYearLastDate.getDate();
    startStop.push(datetime);
    //返回  
    return startStop;
};
/** 
* 得到去年的起止日期 
* **/
function getPreviousYear() {
    // //起止日期数组  
    // var startStop = new Array();
    // //获取当前时间  
    // var currentDate = getCurrentDate();
    // //获得当前年份4位年  
    // var currentYear = currentDate.getFullYear();
    // currentYear--;
    // var priorYearFirstDay = new Date(currentYear, 0, 1);
    // var priorYearLastDay = new Date(currentYear, 11, 1);
    // //添加至数组  
    // var datetime = priorYearFirstDay.getFullYear() + '-' + (priorYearFirstDay.getMonth() + 1) + '-' + priorYearFirstDay.getDate() + ' ' + priorYearFirstDay.getHours() + ':' + priorYearFirstDay.getMinutes() + ':' + priorYearFirstDay.getSeconds();
    // startStop.push(datetime);
    // var datetime = priorYearLastDay.getFullYear() + '-' + (priorYearLastDay.getMonth() + 1) + '-' + priorYearLastDay.getDate() + ' ' + priorYearLastDay.getHours() + ':' + priorYearLastDay.getMinutes() + ':' + priorYearLastDay.getSeconds();
    // startStop.push(datetime);
    var startStop = new Array();
    var myDate = new Date();
    var year = myDate.getFullYear() - 1;
    var beginTime = year + '-01-01';
    var endTime = year + '-12-31';
    startStop.push(beginTime);
    startStop.push(endTime);
    return startStop;
};








export {
    getCurrentDate,
    getCurrentWeek,
    getCurrentMonth,
    getPreviousMonth,
    getCurrentSeason,
    getCurrentYear,
    getPreviousYear
}